package com.yzt.zhuju.network.service;

import com.yzt.zhuju.network.apiconfig.DynamicUrlConstant;
import com.yzt.zhuju.network.entity.dynamic.DynamicBaseBean;
import com.yzt.zhuju.network.entity.dynamic.DynamicListBean;
import com.yzt.zhuju.network.entity.dynamic.DynamicMsgBaseBean;
import com.yzt.zhuju.network.entity.dynamic.DynamicMsgBean;
import com.yzt.zhuju.network.entity.dynamic.DynamicMsgChildBean;
import com.yzt.zhuju.network.entity.dynamic.GameScriptBaseBean;
import com.yzt.zhuju.network.entity.dynamic.GameScriptDescBean;
import com.yzt.zhuju.network.entity.dynamic.RedPkgDetailBean;
import com.yzt.zhuju.network.entity.game.GameBaseBean;
import com.yzt.zhuju.network.entity.game.GameCreateBean;
import com.yzt.zhuju.network.entity.game.GameDetailBean;
import com.yzt.plugin_network.response.HttpResponse;
import com.yzt.zhuju.network.entity.game.GameStartBean;

import okhttp3.RequestBody;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
import rx.Observable;

/**
 * author : bob
 * date   : 2023/2/27
 * desc   : 动态模块
 */
public interface DynamicService {

    /**
     * 动态列表
     */
    @POST(DynamicUrlConstant.GET_DYNAMIC_LIST)
    Observable<HttpResponse<DynamicBaseBean>> dynamicList(@Body RequestBody body);

    /**
     * 动态详情
     */
    @POST(DynamicUrlConstant.GET_DYNAMIC_DETAIL)
    Observable<HttpResponse<DynamicListBean>> dynamicDetail(@Body RequestBody body);

    /**
     * 动态添加
     */
    @POST(DynamicUrlConstant.GET_DYNAMIC_ADD)
    Observable<HttpResponse<Object>> dynamicAdd(@Body RequestBody body);

    /**
     * 动态删除
     */
    @POST(DynamicUrlConstant.GET_DYNAMIC_DEL)
    Observable<HttpResponse<Object>> dynamicDel(@Body RequestBody body);

    /**
     * 动态点赞
     */
    @POST(DynamicUrlConstant.GET_DYNAMIC_LIKE)
    Observable<HttpResponse<Object>> dynamicLike(@Body RequestBody body);

    /**
     * 动态点赞
     */
    @POST(DynamicUrlConstant.GET_DYNAMIC_UN_LIKE)
    Observable<HttpResponse<Object>> dynamicUnLike(@Body RequestBody body);

    /**
     * 动态举报
     */
    @POST(DynamicUrlConstant.GET_DYNAMIC_REPORT)
    Observable<HttpResponse<Object>> dynamicReport(@Body RequestBody body);

    /**
     * 动态评论列表
     */
    @POST(DynamicUrlConstant.GET_DYNAMIC_COMMENT_LIST)
    Observable<HttpResponse<DynamicMsgBaseBean>> dynamicCommentList(@Body RequestBody body);

    /**
     * 动态添加评论
     */
    @POST(DynamicUrlConstant.GET_DYNAMIC_COMMENT_ADD)
    Observable<HttpResponse<DynamicMsgBean>> dynamicCommentAdd(@Body RequestBody body);

    /**
     * 动态评论回复
     */
    @POST(DynamicUrlConstant.GET_DYNAMIC_COMMENT_ADD_SECOND)
    Observable<HttpResponse<DynamicMsgChildBean>> dynamicCommentReply(@Body RequestBody body);

    /**
     * 动态评论点赞
     */
    @POST(DynamicUrlConstant.GET_DYNAMIC_COMMENT_LIKE)
    Observable<HttpResponse<Object>> dynamicCommentLike(@Body RequestBody body);

    /**
     * 我参与的活动
     */
    @POST(DynamicUrlConstant.GET_ACTIVITY_LIST)
    Observable<HttpResponse<GameBaseBean>> activityList(@Body RequestBody body);

    /**
     * 创建组局
     */
    @POST(DynamicUrlConstant.POST_GAME_CREATE)
    Observable<HttpResponse<GameCreateBean>> createGame(@Body RequestBody body);

    /**
     * 编辑组局
     */
    @POST(DynamicUrlConstant.POST_GAME_EDIT)
    Observable<HttpResponse<GameCreateBean>> editGame(@Body RequestBody body);

    /**
     * 游戏详情
     */
    @POST(DynamicUrlConstant.POST_GAME_DETAIL)
    Observable<HttpResponse<GameDetailBean>> getGameDetail(@Body RequestBody body);

    /**
     * 游戏中的玩家
     */
    @POST(DynamicUrlConstant.POST_GAME_PLAY_LIST)
    Observable<HttpResponse<GameDetailBean>> getGamePlayUser(@Body RequestBody body);

    /**
     * 游戏开始
     */
    @POST(DynamicUrlConstant.POST_GAME_START)
    Observable<HttpResponse<GameStartBean>> startGame(@Body RequestBody body);

    /**
     * 游戏结束
     */
    @POST(DynamicUrlConstant.POST_GAME_END)
    Observable<HttpResponse<Object>> endGame(@Body RequestBody body);

    /**
     * 下一关游戏
     */
    @POST(DynamicUrlConstant.POST_GAME_NEXT_LEVEL)
    Observable<HttpResponse<GameDetailBean>> gameNextLevel(@Body RequestBody body);

    /**
     * 更换主持人
     */
    @POST(DynamicUrlConstant.POST_GAME_EXCHANGE_HOST)
    Observable<HttpResponse<Object>> exchangeHost(@Body RequestBody body);

    /**
     * 游戏取消
     */
    @POST(DynamicUrlConstant.POST_GAME_CANCEL)
    Observable<HttpResponse<Object>> cancelGame(@Body RequestBody body);

    /**
     * 游戏加入
     */
    @POST(DynamicUrlConstant.POST_GAME_JOIN)
    Observable<HttpResponse<Object>> joinGame(@Body RequestBody body);

    /**
     * 游戏退出
     */
    @POST(DynamicUrlConstant.POST_GAME_QUIT)
    Observable<HttpResponse<Object>> quitGame(@Body RequestBody body);

    /**
     * 游戏房间退出
     */
    @POST(DynamicUrlConstant.POST_ROOM_QUIT)
    Observable<HttpResponse<Object>> quitRoom(@Body RequestBody body);

    /**
     * 进入房间
     */
    @POST(DynamicUrlConstant.POST_GAME_ENTER_ROOM)
    Observable<HttpResponse<Object>> enterRoom(@Body RequestBody body);

    /**
     * 踢出用户
     */
    @POST(DynamicUrlConstant.POST_GAME_KICK_USER)
    Observable<HttpResponse<Object>> gameKickUser(@Body RequestBody body);


    /**
     * 剧本列表
     */
    @POST(DynamicUrlConstant.POST_SCRIPT_LIST)
    Observable<HttpResponse<GameScriptBaseBean>> scriptList(@Body RequestBody body);

    /**
     * 剧本详情
     */
    @POST(DynamicUrlConstant.POST_SCRIPT_DETAIL)
    Observable<HttpResponse<GameScriptDescBean>> scriptDetail(@Body RequestBody body);

    /**
     * 剧本设置
     */
    @POST(DynamicUrlConstant.POST_SCRIPT_SET)
    Observable<HttpResponse<GameStartBean>> scriptSelect(@Body RequestBody body);

    /**
     * 运气红包
     */
    @POST(DynamicUrlConstant.POST_LUCK_RED_PKG)
    Observable<HttpResponse<Object>> addLuckRedPkg(@Body RequestBody body);

    /**
     * 专属红包
     */
    @POST(DynamicUrlConstant.POST_EXCLUSIVE_RED_PKG)
    Observable<HttpResponse<RedPkgDetailBean>> addExclusiveRedPkg(@Body RequestBody body);

    /**
     * 普通红包
     */
    @POST(DynamicUrlConstant.API_RED_PKG_INFO)
    Observable<HttpResponse<RedPkgDetailBean>> getRedPacketInfo(@Body RequestBody body);

    /**
     * 领取红包
     */
    @POST(DynamicUrlConstant.API_OPEN_RED_PKG)
    Observable<HttpResponse<RedPkgDetailBean>> openRedPacketInfo(@Body RequestBody body);

    /**
     * 红包领取详情
     */
    @POST(DynamicUrlConstant.API_RED_PKG_GET_INFO)
    Observable<HttpResponse<RedPkgDetailBean>> getRedPacketGetInfo(@Body RequestBody body);

}
